package com.kodin.webview;

import android.app.Application;

import com.blankj.utilcode.util.LogUtils;
import com.tencent.smtt.export.external.TbsCoreSettings;
import com.tencent.smtt.sdk.QbSdk;
import com.tencent.smtt.sdk.TbsDownloader;
import com.tencent.smtt.sdk.TbsListener;

import java.util.HashMap;

import io.microshow.rxffmpeg.RxFFmpegInvoke;

public class KdApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;
        RxFFmpegInvoke.getInstance().setDebug(true);
        initQbSdk();
    }
    KdApp instance;
    private boolean downStart = false;
    private void initQbSdk() {
        QbSdk.setDownloadWithoutWifi(true);
        // 在调用TBS初始化、创建WebView之前进行如下配置
        HashMap map = new HashMap();
        map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
        map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);
        QbSdk.initTbsSettings(map);
        QbSdk.setTbsListener(new TbsListener() {
            @Override
            public void onDownloadFinish(int progress) {
                LogUtils.e("QbSdk", "onDownloadFinish -->下载X5内核完成：" + progress);
                //若是progress ==100 的情况下才表示 内核加载成功， 否则重新 加载
                if (progress == -122 && !downStart) {
                    downStart = true;
                    TbsDownloader.startDownload(instance);
                }
            }

            @Override
            public void onInstallFinish(int progress) {
                LogUtils.e("QbSdk", "onInstallFinish -->安装X5内核进度：" + progress);
            }

            @Override
            public void onDownloadProgress(int progress) {
                LogUtils.e("QbSdk", "onDownloadProgress -->下载X5内核进度：" + progress);
            }
        });
        QbSdk.initX5Environment(instance, new QbSdk.PreInitCallback() {
            @Override
            public void onCoreInitFinished() {
                // 内核初始化完成，可能为系统内核，也可能为系统内核
                LogUtils.e("QbSdk");
            }

            /**
             * 预初始化结束
             * 由于X5内核体积较大，需要依赖网络动态下发，所以当内核不存在的时候，默认会回调false，此时将会使用系统内核代替
             * @param isX5 是否使用X5内核
             */
            @Override
            public void onViewInitFinished(boolean isX5) {
                if (!isX5)
//                    ToastUtils.showLong("X5内核加载失败，请重新打开app");
                    LogUtils.e("QbSdk:" + isX5);
            }
        });
    }
}
